; 代码清单7-1
; 文件说明: 主引导扇区代码
; 创建时间: 2024-09-22 21:54


    jmp near start
; 文本数据区
message db '1+2+...+1000='

start:
; 段地址初始化
    mov ax, 0x07c0
    mov ds, ax

    mov ax, 0xb800
    mov es, ax

; 传送数据到显卡
    mov si, message
    mov di, 0
    mov cx, start-message   ; 字符长度,即循环次数
@g:
    mov al, [si]
    mov ah, 0x07
    mov [es:di], ax
    add di, 2
    inc si
    loop @g

; 计算累加和
    xor ax, ax
    xor dx, dx
    mov cx, 1000
@f:
    add ax, cx
    adc dx, 0
    loop @f

; 除法获取地址各位数
    xor bx, bx
    mov ss, bx      ; 初始化堆栈段地址及栈指针地址
    mov sp, bx

    mov bx, 10      ; 设置除数
    xor cx, cx      ; 统计位数
@e:
    div bx
    or dl, 0x30
    inc cx
    push dx
    xor dx, dx
    cmp ax, 0x00
    jne @e

; 显示地址
@d:
    pop dx
    mov dh, 0x05
    mov [es:di], dx
    add di, 2
    loop @d

    jmp near $      ; 当前循环

; 填充0到512字节
    times 510-($-$$) db 0
                     db 0x55, 0xaa